package main

import (
	"encoding/json"
	"fmt"
	"math/rand"
	"os"
)

func main() {
	userInfo := read()

	name_lst := []string{"swm", "ygl", "xd", "cl"}
	var button string

	for button != "q" {

		fmt.Println("press any key to continue")
		fmt.Scan(&button)
		if button != "q" {
			fmt.Println("开始点名：")
			for i := 0; i < len(name_lst); i++ {

				//// 随机种子  时间戳：从1970年1月1日到现在经历的秒数
				//rand.Seed(time.Now().Unix())
				num := rand.Intn(len(name_lst))
				name := name_lst[num]
				userInfo[name] += 1

				// 删除被点到的名字
				name_lst = append(name_lst[:num], name_lst[(num+1):]...)
				fmt.Println("点到的是：", name)
				write(userInfo)
				break
			}

			if len(name_lst) == 1 {
				fmt.Println("名单还有最后一人：", name_lst[0])
				userInfo[name_lst[0]] += 1
				write(userInfo)
				break
			}
		} else {
			break
		}
	}
	fmt.Println(userInfo)
}

func read() map[string]int {
	// 读取文件
	userFile, err := os.ReadFile("./rollCall.json")
	if err != nil {
		//fmt.Println("Json文件读取错误:", err)
		os.Create("userInfo.txt")
		return make(map[string]int)
	}
	// json->map
	var userInfo map[string]int
	err = json.Unmarshal([]byte(userFile), &userInfo)
	if err != nil {
		fmt.Println("Json转换错误:", err)
	}
	if userInfo == nil {
		return make(map[string]int) // 返回空map
	}
	return userInfo
}

func write(userInfo map[string]int) {
	// map->json
	userJsonFile, err := json.MarshalIndent(userInfo, "", " ")
	if err != nil {
		fmt.Println("Map转换错误:", err)
	}
	// 写入
	err = os.WriteFile("./rollCall.json", userJsonFile, 0644)
	if err != nil {
		fmt.Println("Json写入错误:", err)
	}
}
